<?php

class LoginController extends Zend_Controller_Action
{
    public function init()
    {
        $this->em = Zend_Registry::getInstance()->entitymanager;
    }

    //--------------------------------//
    //             PAGINA             //
    //--------------------------------//

    public function indexAction()
    {
    }

    public function logoutAction()
    {
        // vaciar la variable de sesion
        Zend_Session::namespaceUnset('Usuario');

        // redireccionar a la página de login
	$this->_redirect('/login');
    }

    //--------------------------------//
    //              AJAX              //
    //--------------------------------//

    public function ajaxLoginAction()
    {
        try{
            // obtener los parametros
            $username = $this->_request->getPost('username');
            $password = $this->_request->getPost('password');
            $cpassword=crypt($password,'$6$rounds=5000$t0c4nt4d3nad3ptr25ajg4973$');

            // obtener los datos
            $usuario = $this->em->createQueryBuilder()
                    ->select   ('u')
                    ->from     ('Default_Model_Usuario', 'u')
                    ->where    ("u.username='$username'")
                    ->andWhere ("u.password='$cpassword'")
                    ->getQuery ()
                    ->getSingleResult();

            $funcionalidades = $this->em->createQueryBuilder()
                    ->select   ('f.nombreFuncionalidad')

                    ->from     ('Default_Model_Usuario', 'u')
                    ->join     ('u.perfil',   'p')
                    ->join     ('p.funcionalidades',     'f')

                    ->where    ("u.username='$username'")
                    ->andWhere ("u.password='$cpassword'")
                    ->getQuery ()
                    ->getResult();

            // crear y asignar los datos en la variable de sesion
            $session = new Zend_Session_Namespace('Usuario');
            $session->username           = $usuario->getUsername();
            $session->codigoUsuario      = $usuario->getCodigoUsuario();
            $session->codigoPerfil       = $usuario->getPerfil()->getCodigoPerfil();
            $session->nombrePerfil       = $usuario->getPerfil()->getNombrePerfil();
            if ($usuario->getDepartamento())
                // SysAdmin no tiene departamento
                $session->codigoDepartamento = $usuario->getDepartamento()->getCodigoDepartamento();

            foreach($funcionalidades as $funcionalidad){
                $session->__set($funcionalidad['nombreFuncionalidad'], true);
            }

            X\Msg::Success('');
        }
        catch(Doctrine\ORM\NoResultException $e){
            X\Msg::Failure('Usuario o Contraseña incorrecta. Intente de nuevo.');
        }
        catch(Exception $e){
            X\Msg::Failure('Error al realizar el login. '.$e->getMessage());
        }
    }
}
